/**
 * ObjectSerialize.java
 * Created at 2016年4月16日
 * Created by Jackie Liu
 * Copyright (C) 2016 Jackie Liu, All rights reserved.
 */
package com.huabo.serialize;

/**
 * <p>ClassName: ObjectSerialize</p>
 * <p>Description: 对象序列化接口</p>
 * <p>Author: Jackie Liu</p>
 * <p>Date: 2016年4月16日</p>
 */
public interface Serializer {

	/**
	 * <p>Description: 序列化实例为字符串</p>
	 * @param object 被序列化的实例
	 * @return 序列化后的字符串
	 */
	public String getString(Object object);
	
	/**
	 * <p>Description: 序列化实例为字节数组</p>
	 * @param object 被序列化的实例
	 * @return 序列化后的字节数组
	 */
	public byte[] getByteArray(Object object);
	
	/**
	 * <p>Description: 反序列化实例</p>
	 * @param serializeText 被反序列化的字符串
	 * @param clazz 实例class对象
	 * @return 序列化后的实例
	 */
	public <T> T getObject(String serializeText, Class<T> clazz);
	
	/**
	 * <p>Description: 反序列化实例</p>
	 * @param serializeByteArray 被反序列化的字节数组
	 * @param clazz 实例class对象
	 * @return 序列化后的实例
	 */
	public <T> T getObject(byte[] serializeByteArray, Class<T> clazz);
}
